package com.project.mapper;

import com.project.bean.GoodsBean;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDate;
import java.util.List;

public interface IGoodsMapper {
    /**
     * 添加商品
     * @param goodsBean 商品对象
     */
    public void add(GoodsBean goodsBean);

    /***
     * 按id删除商品
     * @param id 商品id
     */
    public void del(int id);

    /**
     * 按id修改价格
     * @param id 商品id
     * @param price 价格
     */
    public void update(@Param("id") int id, @Param("price") int price);

    /**
     * 按id查询商品
     * @param id 商品id
     * @return 商品对象
     */
    public GoodsBean findById(int id);

    /**
     * 动态条件分页查询当前页的数据
     * @param name 商品名
     * @param minPrice 最低价格
     * @param maxPrice 最高价格
     * @param start 起始记录数
     * @param pageSize 每页显示记录数
     * @return 商品集合
     */
    public List<GoodsBean> cutByPrice(@Param("name") String name,@Param("minPrice") int minPrice,
           @Param("maxPrice") int maxPrice, @Param("start") int start,@Param("pageSize") int pageSize);

    /**
     * 按条件统计记录数
     * @param name 商品名
     * @param minPrice 最低价格
     * @param maxPrice 最高价格
     * @return 记录数
     */
    public int countByPrice(@Param("name") String name,@Param("minPrice") int minPrice,
                            @Param("maxPrice") int maxPrice);

    /**
     * 动态条件分页查询当前页的数据
     * @param factory 工厂
     * @param startDate 开始时间
     * @param endDate 结束时间
     * @param start 起始记录数
     * @param pageSize 每页显示记录数
     * @return 商品集合
     */
    public List<GoodsBean> cutByDate(@Param("factory") String factory,
           @Param("startDate") LocalDate startDate,@Param("endDate") LocalDate endDate,
           @Param("start") int start,@Param("pageSize") int pageSize);

    /**
     * 按条件统计记录数
     * @param factory 工厂
     * @param startDate 开始时间
     * @param endDate 结束时间
     * @return 记录数
     */
    public int countByDate(@Param("factory") String factory,
               @Param("startDate") LocalDate startDate,@Param("endDate") LocalDate endDate);
}
